//
// Created by tang on 23-4-24.
//

#ifndef PIINFO_TYPE_INFO_HPP
#define PIINFO_TYPE_INFO_HPP

#include "common/namespace.h"
#include "parser/cursor.hpp"
#include "meta/meta_info.hpp"

class TypeInfo
{
public:
    TypeInfo(const Cursor& cursor, const Namespace &current_ns);
    virtual ~TypeInfo();

    const MetaInfo& meta_data() const;

    std::string source_file() const;

    Namespace ns() const;

    Cursor& cursor();

protected:
    MetaInfo meta_;
    bool enabled_;
    std::string alias_cn_;
    Namespace ns_;

private:
    Cursor root_; // cursor that represents the root of this language type
};

#endif  // PIINFO_TYPE_INFO_HPP
